package modele;

import java.util.Comparator;

public class Formation implements Comparable<Formation>{

	private int		idFormation;
	private String	code;
	private String	titre;
	private String	objectif;
	private String	contenu;
	private String	certification;
	private String	prerequis;

	public Formation() {

	}

	public Formation(int idFormation, String code, String titre, String objectif, String contenu, String certification, String prerequis) {
		super();
		this.idFormation = idFormation;
		this.code = code;
		this.titre = titre;
		this.objectif = objectif;
		this.contenu = contenu;
		this.certification = certification;
		this.prerequis = prerequis;
	}

	public Formation(String code, String titre, String objectif, String contenu, String certification, String prerequis) {
		super();
		this.code = code;
		this.titre = titre;
		this.objectif = objectif;
		this.contenu = contenu;
		this.certification = certification;
		this.prerequis = prerequis;
	}

	public int getIdFormation() {
		return idFormation;
	}

	public void setIdFormation(int idFormation) {
		this.idFormation = idFormation;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getTitre() {
		return titre;
	}

	public void setTitre(String titre) {
		this.titre = titre;
	}

	public String getObjectif() {
		return objectif;
	}

	public void setObjectif(String objectif) {
		this.objectif = objectif;
	}

	public String getContenu() {
		return contenu;
	}

	public void setContenu(String contenu) {
		this.contenu = contenu;
	}

	public String getCertification() {
		return certification;
	}

	public void setCertification(String certification) {
		this.certification = certification;
	}

	public String getPrerequis() {
		return prerequis;
	}

	public void setPrerequis(String prerequis) {
		this.prerequis = prerequis;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((certification == null) ? 0 : certification.hashCode());
		result = prime * result + ((code == null) ? 0 : code.hashCode());
		result = prime * result + ((contenu == null) ? 0 : contenu.hashCode());
		result = prime * result + idFormation;
		result = prime * result + ((objectif == null) ? 0 : objectif.hashCode());
		result = prime * result + ((prerequis == null) ? 0 : prerequis.hashCode());
		result = prime * result + ((titre == null) ? 0 : titre.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Formation other = (Formation) obj;
		if (certification == null) {
			if (other.certification != null)
				return false;
		} else if (!certification.equals(other.certification))
			return false;
		if (code == null) {
			if (other.code != null)
				return false;
		} else if (!code.equals(other.code))
			return false;
		if (contenu == null) {
			if (other.contenu != null)
				return false;
		} else if (!contenu.equals(other.contenu))
			return false;
		if (idFormation != other.idFormation)
			return false;
		if (objectif == null) {
			if (other.objectif != null)
				return false;
		} else if (!objectif.equals(other.objectif))
			return false;
		if (prerequis == null) {
			if (other.prerequis != null)
				return false;
		} else if (!prerequis.equals(other.prerequis))
			return false;
		if (titre == null) {
			if (other.titre != null)
				return false;
		} else if (!titre.equals(other.titre))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Formation [idFormation=" + idFormation + ", code=" + code + ", titre=" + titre + ", objectif=" + objectif + ", contenu=" + contenu
				+ ", certification=" + certification + ", prerequis=" + prerequis + "]";
	}

	public String getListTitle() {
		//
		return getIdFormation() + " [ " + getCode() + " ] " + getTitre();
	}

	public static Comparator<Formation>	FormationNameComparator	= new Comparator<Formation>() {

																	public int compare(Formation Formation1, Formation Formation2) {

																		String FormationName1 = Formation1.getTitre().toUpperCase();
																		String FormationName2 = Formation2.getTitre().toUpperCase();

																		// ascending
																		// order
																		return FormationName1.compareTo(FormationName2);

																		// descending
																		// order
																		// return
																		// FormationName2.compareTo(FormationName1);
																	}

																};

	@Override
	public int compareTo(Formation o) {
		// 
		int compareId = ((Formation) o).getIdFormation(); 
		 
		//ascending order
		return this.getIdFormation() - compareId;
		
	}


}
